package com.mastercard.assets.web.struts.actions;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblCategoria;
import com.mastercard.assets.jpa.TblFlujo;
import com.mastercard.assets.jpa.TblPreimplementacion;
import com.mastercard.assets.jpa.TblSubcateg;
import com.mastercard.assets.jpa.TblTarea;
import com.mastercard.assets.jpa.TblTareaPreimplementacion;
import com.mastercard.assets.util.MCUtil;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.struts.forms.AssetAltaForm;
import com.mastercard.assets.web.struts.forms.AssetBorrarForm;
import com.mastercard.assets.web.struts.forms.AssetBuscarForm;
import com.mastercard.assets.web.struts.forms.LoginForm;
import com.mastercard.assets.web.util.to.PreimplementacionTO;
import com.mastercard.assets.web.util.to.UserLogin;

public class PreimplementacionEventoIn
	extends
		Action
{
	public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException
	{
		HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
		
		// en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
		
		List< TblPreimplementacion > preimplementationsAct = MasterCardDAO.getAllActivePreimplementations( ) ;
		MasterCardDAO.closeEntityManager( ) ;
                
		List< TblPreimplementacion > preimplementations = new ArrayList( ) ;
		
		if( preimplementationsAct != null && preimplementationsAct.size( ) > 0 )
			for( TblPreimplementacion pre : preimplementationsAct )
			{
                            //VERIFICA QUE SEA FLUJO DE IMPLEMENTACION DEPENDIENDO DEL ROL
                            if( user.getActualRoleId( ) != 6 )
                            {
                                if( pre.getTblFlujo( ).getCveFlujo( ) != 6 )
                                    continue ;
                            } else {
                                if( pre.getTblFlujo( ).getCveFlujo( ) != 11 && pre.getTblFlujo( ).getCveFlujo( ) != 12 )
                                    continue ;
                            }
                            
                                        
//				// toma el flujo
//				TblFlujo flujo = pre.getTblFlujo( ) ;
//				
				// toma los assets
				List< TblAsset > assets = pre.getTblAssets( ) ;
				
				List< TblAsset > assetsActivos = new ArrayList< TblAsset >( ) ;
				
				// en caso de que no sea null
				if( assets != null && assets.size( ) > 0 )
					// recorre
					for( TblAsset asset : assets )
					{
						// en caso de ser status == 0 
						if( asset.getStatus( ) == 0 )
							// siguiente
							continue ;
						
                                                // para mostrar depende del rol
                                                if( user.getActualRoleId( ) == 6 )
                                                {
                                                    // crea y agrega
                                                    if( asset.getTblPais( ).getCvePais( ) == 17 )
                                                        assetsActivos.add( asset ) ;
                                                } else {
                                                    // crea y agrega
                                                    assetsActivos.add( asset ) ;
                                                }
						
						
					}
				
				// en caso de que assetsActivos sea mayores que 0
				if( assetsActivos.size( ) > 0 )
					preimplementations.add( pre ) ;
			}
		
		request.setAttribute( "Preimplementations" , preimplementations ) ;
		
	  	return mapping.findForward( "success" ) ;
	}
	
}
